/**************************************************************************//**
 * @item     CosyOS-II Kernel
 * @file     sv_int_pend_flag.h
 * @brief    中断挂起服务_FLAG
 * @details  仅在 pendsv_hook 中调用并执行。
 * @author   迟凯峰
 * @version  V3.1.0
 * @date     2024.11.11
 ******************************************************************************/

#ifndef __SV_INT_PEND_FLAG_H
#define __SV_INT_PEND_FLAG_H

void sp_resume_task (s_tasknode_tsp htask);
void sp_suspend_task(s_tasknode_tsp htask);
void sp_delete_task (s_tasknode_tsp htask);
void sp_set_taskpri (s_tasknode_tsp htask, s_u8_t pri);
void sp_set_block   (s_tasknode_tsp htask, s_delay_t tick);
void sp_clear_block (s_tasknode_tsp htask);
void sp_write_binary(s_binary_tsp hbin, s_bool_t val);

/**
 @addtogroup 中断挂起服务_FLAG
 @{
 */

#define sPS2_ResumeTask(htask)      sp_resume_task(htask)      /*!< 恢复任务 */
#define sPS2_SuspendTask(htask)     sp_suspend_task(htask)     /*!< 挂起任务 */
#define sPS2_DeleteTask(htask)      sp_delete_task(htask)      /*!< 删除任务 */
#define sPS2_SetTaskPri(htask, pri) sp_set_taskpri(htask, pri) /*!< 设置任务优先级 */
#define sPS2_SetBlock(htask, tick)  sp_set_block(htask, tick)  /*!< 设置阻塞（时间）*/
#define sPS2_ClearBlock(htask)      sp_clear_block(htask)      /*!< 清除阻塞（状态）*/
#define sPS2_WriteBin(bin, val)     sp_write_binary(&bin, val) /*!< 上锁or给予二值信号量 */

/** @} */

#endif
